package com.fenghongzhang.kotlin5

import java.lang.StringBuilder

fun main(){
//    val num1andnum2 = num1andnum2(1, 1, ::sum)
//    val num1andnum3 = num1andnum2(1, 1, ::sub)
    //高阶函数
//    val num1andnum4 = num1andnum2(1,4){ a1,b1,_ ->
//        a1 * b1
//    }
//    println(num1andnum4)

    StringBuilder().aaaa {
        append("start")
    }

    StringBuffer().aaaa {

    }


}

//fun num1andnum2(num1:Int,num2:Int){
//
//}

fun num1andnum2(num1:Int,num2:Int,block:(Int,Int,String)-> Int):Int {
    val block1 = block(num1, num2,"123")
    return block1
}

fun sum(num1:Int,num2:Int) :Int{
    return num1 + num2
}
fun sub(num1:Int,num2:Int) :Int{
    return num1 - num2
}















private fun one() {
    val mutableListOf = mutableListOf<String>("haha", "hehe", "heihei")


    //跟前两个方法的区别是返回自己本身
//    var sb = StringBuffer().apply {
//        append("start")
//        for (i in mutableListOf){
//            append(i)
//        }
//        append("end")
//    }
//    val toString = sb.append("zaijie").toString()
//    println(toString)


    //这是run方法的使用.和with很想
//    var sb = StringBuffer().run {
//        append("start")
//        for(i in mutableListOf){
//            append(i).append("\n")
//        }
//        append("end")
//        toString()
//    }

//    var lamada = { }

    //这是with方法的使用
    var sb = with(StringBuilder()) {
        append("start")
        for (i in mutableListOf) {
            append(i).append("\n")
        }
        append("end")
        toString()
    }
    println(sb)


//    val sb = StringBuilder()
//    sb.append("start")
//
//    for(i in mutableListOf){
//        sb.append(i)
//    }
//    sb.append("end")
//
//    sb.toString()
//    println(sb.toString())
}

